#include <stdio.h>
int a[] = {0, 1, 2, 5, 8, 7, 6, 3};
int b[9];
int c[9];
int count = 0;
int main()
{
    int i, j, k, t;
    void print();
    printf("Please enter original order of digits 1~8:");
    for (i = 0; i < 8; i++)
        scanf("%d", &b[a[i]]);
    printf("The sorting process is as felow:\n");
    print();
    for (t = -1, j = 0; j < 8 && t == -1; j++)
        if (b[a[j]] == 1)
            t = j;
    for (j = 0; j < 8; j++)
        c[j] = a[(j + t) % 8];
    for (i = 2; i < 9; i++)
        for (j = i - 1; j < 8; j++)
            if (b[c[j]] == i && j != i - 1)
            {
                b[4] = i;
                b[c[j]] = 0;
                print();
                for (k = j; k != i - 1; k--)
                {
                    b[c[k]] = b[c[k - 1]];
                    b[c[k - 1]] = 0;
                    print();
                }
                b[c[k]] = i;
                b[4] = 0;
                print();
                break;
            }
            else if (b[c[j]] == i)
                break;

    return 0;
}
void print(void)
{
    int c;
    for (c = 0; c < 9; c++)
        if (c % 3 == 2)
            printf("%d\n", b[c]);
        else
            printf("%2d", b[c]);
    printf("---%2d---\n", count++);
}
//熊贤豪